﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        { 
            Console.WriteLine("请输入题号");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    No1();
                    break;
                case 2:
                    No2();
                    break;
                case 3:
                    No3();
                    break;
                case 4:
                    No4();
                    break;
                case 5:
                    No5();
                    break;
                case 6:
                    No6();
                    break;
                case 7:
                    No7();
                    break;
                case 8:
                    No8();
                    break;
                case 9:
                    No9();
                    break;
                case 10:
                    No10();
                    break;
                case 11:
                    No11();
                    break;
                default:
                    break;
            }
            Console.ReadKey();

        }
        static void No1() {
            //输入一行字符串，分别统计出其中 英文字母、数字、空格的个数。
            Console.WriteLine("请输入一行字符串");
            string str = Console.ReadLine();
            int a1 = 0; int b1 = 0; int c1 = 0;
            foreach (char c in str)
            {
                if (char.IsLetter(c))
                {
                    a1++;
                }
                else if (char.IsDigit(c))
                {
                    b1++;
                }
                else
                {
                    c1++;
                }
            }
            Console.WriteLine("英文字母有 " + a1 + " 个，数字有 " + b1 + " 个，符号有 " + c1 + " 个");
        }
        static void No2() {

            //在方法中创建一个 double 类型的数组，并在该数组中存入 5 名学生的考试成绩(控制台输入)，
            //计算总成绩和平均成绩。 要求使用foreach语句实现该功能，
            double[] arr = new double[5];
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine("请输入第" + (i + 1) + "学生的考试成绩");
                arr[i] = double.Parse(Console.ReadLine());
            }
            double c = 0;
            foreach (double a in arr)
            {
                c = c + a;
            }
            Console.WriteLine("计算总成绩" + c);
            Console.WriteLine("平均成绩" + (c / arr.Length));
        }
        static void No3() {
            //定义一个方法，实现一维数组的排序功能，从大到小排序。(不要用Array类的方法)
            int[] a = {12,23,56,45,23 };
            Console.WriteLine("排序前");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i]+"  ");
            }
            for (int i = 0; i < a.Length-1; i++)
            {
                for (int j = 1; j < a.Length; j++)
                {
                    
                    if (a[j]>a[i])
                    {
                        int o = a[j];
                        a[j] = a[i];
                        a[i] = o;
                    }
                }
            }
            Console.WriteLine();
            Console.WriteLine("排序后");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + "  ");
            }
        }

        static void No4()
        {
            //实现查找数组元素索引的功能。
            //定义一个数组，然后控制台输入要查找的元素，返回输入值在数组中最后一次出现的位置。
            //若是找不到，请打印找不到。(不要用Array类的方法)
            int[] a = {21,23,54,23,11,45 };
            Console.WriteLine("可供查找的数组元素");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i]+"  ");
            }
            Console.WriteLine("输入要查找的元素");
            int b = int.Parse(Console.ReadLine());
            int c = -1;
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i]==b)
                {
                    c = i;
                }
            }
            if (c == -1)
            {
                Console.WriteLine("找不到");
            }
            else {
                Console.WriteLine("数组中最后一次出现的位置是"+c);
            }
        }
        static void No5() {
            //打印九九乘法表
            for (int i = 1; i < 10; i++)
            {
                for (int j = 1; j <i+1; j++)
                {
                    Console.Write(i+"*"+j+"="+(i*j)+"/t");
                }
                Console.WriteLine();
            }
        }
        static void No6() {
            //用户输入正方形边长，用*打印出空心正方形。
            Console.WriteLine("用户输入正方形边长");
            int a = int.Parse(Console.ReadLine());
            for (int i = 1; i <=a; i++)
            {
                for (int j = 1; j <= a; j++)
                {
                    if (i==1||i==a||j==1||j==a)
                    {
                        Console.Write("* ");
                    }
                    else {
                        Console.Write("  ");  
                    }
                }
                Console.WriteLine();
            }
        }
        static void No7() {
            //边长是3
            //行列数就是5
            Console.WriteLine(" "+" "+"*");
            Console.WriteLine(" "+"***");
            Console.WriteLine("*****");
            Console.WriteLine(" " + "***");
            Console.WriteLine(" " + " " + "*");
        }
        static void No8() {
            //用户输入正方形边长，用* 打印出实心正方形。
            Console.WriteLine("用户输入正方形边长");
            int a = int.Parse(Console.ReadLine());
            for (int i = 0; i < a; i++)
            {
                for (int j = 0; j < a; j++)
                {
                    Console.Write("* ");
                }
                Console.WriteLine();
            }
        }
        static void No9() {
            //在 方法中创建一个字符串类型的数组，并存入 5 个值，然后将数组中下标是偶数的元素输出。
            int[] a = { 0, 1, 2, 3, 4 };
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i]+"  ");
            }
            Console.WriteLine();
            Console.WriteLine("其中偶数有");
            for (int i = 0; i <a.Length; i++)
            {
                if (a[i]%2==0)
                {
                    Console.Write(a[i] + "  ");
                }
            }
        }
        static void No10() {
            //如果一个数组保存元素是有序的（从大到小），向这个数组中插入一个数，使得插入后的数组元素仍然保持有序。
            int[] a = new int [5];int c = 5;
            for (int i = 1; i < a.Length; i++)
            {
                 a[i] = c;
                c--;
            }
            for (int i = 1; i < a.Length; i++)
            {
                Console.Write(a[i] + "  ");
            }
            Console.WriteLine("向这个数组中插入一个数");
            a[0] = int.Parse(Console.ReadLine());
            Console.WriteLine("插入后数组");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + "  ");
            }
        }
        static void No11() {
            //打印杨辉三角形（要求打印10行），如下所示：（使用二维数组）
            //1
            //1    1
            //1    2    1
            //1    3    3   1
            //1    4    6   4    1
            //1    5    10  10   5   1

        }



    }
}
